package cn.wilson.topic;

import cn.wilson.ConnectionUtil;
import com.rabbitmq.client.BuiltinExchangeType;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.MessageProperties;

/**
 *      消息发送者  生产者
 */
public class Send {
    //指定队列的名字
    public static final String TOPIC_EXCHANGE = "exchange_name_topic";

    public static void main(String[] args) {

        try (
                //自动关流  jdk新特性
            //使用工具创建连接
            Connection connection = ConnectionUtil.getConnection();
            //使用连接对象，创建通道
            Channel channel = connection.createChannel();
        ){
            //声明交换机
            channel.exchangeDeclare(
                    TOPIC_EXCHANGE,       //交换机的名字
                    BuiltinExchangeType.TOPIC,    //交换机的类型  可以写字符串，也可以使用常量
                    true    //交换机持久化
            );


            //准备消息内容
            String msg = "用于测试topic的消息";

            //使用指定的交换机发送消息
            channel.basicPublish(
                    TOPIC_EXCHANGE,     //使用默认的交换机
                    "test.xxx",      //routingkey，指定队列
                    MessageProperties.PERSISTENT_TEXT_PLAIN,       //持久化
                    msg.getBytes()      //消息的内容，但是他要的是字节数组
            );

            System.out.println("我发了：" + msg);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


}
